package tpgrandt.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import tpgrandt.varios.Localidad;
import tpgrandt.varios.Pais;
import tpgrandt.varios.Provincia;

/**
 * @version 1.0
 * @created 19-Jan-2010 18:39:28
 */
public class UbicacionDAO {

	public static Vector<Pais> listarPaises() {
	    try {
                Statement st = DAO.getStatement();
                String query = "SELECT * FROM pais ORDER BY nombre;";
                ResultSet rs = st.executeQuery(query);

                Vector<Pais> paises = new Vector<Pais>();
                while(rs.next()) {
                    int id_pais = rs.getInt("id_pais");
                    Pais l = new Pais(id_pais, rs.getString("nombre"));
                    l.setProvincias(listarProvincias(id_pais));
                    paises.add(l);
                }
                return paises;
            } catch (SQLException e) {
		// TODO Auto-generated catch block
                Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, e);
            }
            return null;
	}

	/**
	 * 
	 * @param pais
	 */
	private static Vector<Provincia> listarProvincias(int pais) throws SQLException {
            Statement st = DAO.getStatement();
            String query = "SELECT * FROM provincia " +
                           "WHERE id_pais = " + pais + " ORDER BY nombre;";
            ResultSet rs = st.executeQuery(query);

            Vector<Provincia> provincias = new Vector<Provincia>();
            while(rs.next()) {
                int id_provincia = rs.getInt("id_provincia");
                Provincia l = new Provincia(id_provincia, rs.getString("nombre"));
                l.setLocalidades(listarLocalidades(id_provincia));
                provincias.add(l);
            }
            return provincias;
	}

	/**
	 * 
	 * @param provincia
	 */
	private static Vector<Localidad> listarLocalidades(int provincia) throws SQLException{
	    Statement st = DAO.getStatement();
            String query = "SELECT * FROM localidad " +
                           "WHERE id_provincia = " + provincia + " ORDER BY nombre;";
            ResultSet rs = st.executeQuery(query);
            
            Vector<Localidad> localidades = new Vector<Localidad>();
            while(rs.next()) {
                Localidad l = new Localidad(rs.getInt("id_localidad"), rs.getString("nombre"));
                localidades.add(l);
            }
            return localidades;
	}
}